热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

本文|名下_操作教程|如何将DataEase开源工具嵌入第三方系统?

篇首语:本文由编程笔记#小编为大家整理,主要介绍了操作教程|如何将DataEase开源工具嵌入第三方系统?相关的知识,希望对你有一定的参考价值。编者注:本文

篇首语:本文由编程笔记#小编为大家整理,主要介绍了操作教程|如何将DataEase开源工具嵌入第三方系统?相关的知识,希望对你有一定的参考价值。


编者注:本文选自DataEase官方知识库

原文链接:
https://kb.fit2cloud.com/archives/122

在企业日常的使用中,经常有将DataEase开源数据可视化分析平台嵌入到第三方系统的需求。这样一来,DataEase就可以作为第三方系统中的某个菜单项,在点击相关选项后即可直接打开DataEase页面,并进行相关操作。

DataEase开源工具嵌入第三方系统的效果示意图如下:

本文主要分享如何通过单点登录和模拟登录两种方式进行接口对接,从而实现将DataEase嵌入到第三方系统的实际效果。为了方便描述,本文将所示例的第三方系统统一称为“A系统”。


方案概述

DataEase支持使用iframe嵌套到第三方系统中,关键问题在于如何统一两个系统的用户认证,即用户在A系统中打开DataEase系统时,无需再次登录,DataEase可以自动登录至A系统中的账户。目前有两种解决方案:即单点登录和模拟登录。

1.1 单点登录

使用支持OIDC或CAS协议的系统作为统一登录平台,A系统与DataEase全部对接到同一个单点平台,实现只需一次登录就可访问两个系统,即单点登录(Single Sign On,SSO)。

单点登录方式是DataEase原生支持的用户登录集成方式,仅需修改前端iframe嵌套即可。使用单点登录的方式,用户可以使用同一个密码登录两个平台,DataEase中不存在的用户在登录时会自动创建。单点登录方式在配置和使用方面更加方便,是比较推荐的方式。

1.2 模拟登录

A系统后台请求DataEase的登录接口,将登录成功的Token写入COOKIE中,以模拟用户登录的过程,省去用户自己输入密码登录的过程。

有些情况下受限于业务系统,部分用户的第三方系统没有对接SSO系统,这种情况下可以使用模拟登录的方式,通过做一些开发实现想要的效果。


单点登录方式的实现过程

2.1 流程描述

目前,DataEase开源数据可视化分析平台支持OIDC、CAS协议,如果DataEase与A系统均已对接同一个单点登录系统,那么通过单点登录方案集成嵌入DataEase的整体流程如下:


  1. 用户通过单点登录系统登录至A系统;

  2. 用户点击相应菜单项,访问DataEase系统;

  3. DataEase通过单点登录系统获取到当前登录用户信息,自动登录并重定向至DataEase首页;

  4. 用户在A系统Web页面通过iframe嵌套使用DataEase系统功能。

2.2 配置指南


  1. 配置OIDC或CAS;


  1. 默认登录方式修改为“OIDC”;


  1. 单点登录配置好后,在A系统中使用iframe地址访问DataEase地址即可。

模拟登录方式的实现过程

3.1 流程描述


  1. 用户登录A系统;

  2. 用户在A系统中通过iframe访问A系统的模拟登录接口;

  3. A系统根据已登录的用户信息请求DataEase的用户查询接口,获取到DataEase系统中对应的用户ID;

  4. A系统根据用户ID调用DataEase的用户密码修改接口,修改用户密码;

  5. A系统调用DataEase的模拟登录接口获取Token;

  6. A系统将Token写入COOKIE中,并重定向至DataEase页面(当浏览器COOKIE中存在Token时,访问DataEase便不再需要认证);

  7. 用户在A系统Web页面通过iframe嵌套使用DataEase系统功能。

3.2 开发指南

此方案需要A系统提供一个模拟登录接口,并且在登录前修改DataEase中的用户密码以保证模拟登录成功。由于模拟登录是使用COOKIE来实现,所以需要保证A系统与DataEase处于同一个根域名下。

3.2.1 DataEase提供的接口


  1. API认证方式

DataEase接口调用时需要在请求头中传递accessKey和signature。

其中accessKey为下图中的Access Key的值,Access Key和Secret Key获取方式如下图所示。

signature为Access Key和Secrent Key拼接后使用AES加密计算出的结果,计算方式如下:

图示代码可参考此链接:
https://github.com/liuboF2c/dataease-login-adpter-demo/blob/main/src/main/java/dataease/lboo/demo/controller/DataEaseLoginController.java。


  1. 用户查询接口

由于修改用户密码接口需要使用用户ID,我们首先需要使用用户查询接口获取用户ID。

其中operator的取值可参考源码,比如“eq”代表SQL中的“=”。

field取值参考数据库中sys_user表的字段名,例如username、nick_name等。


  1. 修改用户密码接口

通过用户密码修改接口,修改用户密码。此处请求参数中的userId为上一步返回值中获取到的userId。


  1. 登录接口

使用登录接口可获取到Token,将Token放入浏览器COOKIE中后访问DataEase便不再需要登录认证。

登录接口中的password和username均需使用RSA加密,加密密钥取自DataEase源码中application.properties文件。

加密方式如下:

图示代码可参考此链接:

https://github.com/liuboF2c/dataease-login-adpter-demo/blob/main/src/main/java/dataease/lboo/demo/controller/DataEaseLoginController.java。

3.2.2 嵌套对接示例代码

基于以上接口,我们就可以实现将DataEase嵌入第三方系统。我写了一个Demo示例(下称Demo系统)供大家参考:
https://github.com/liuboF2c/dataease-login-adpter-demo。

使用此示例需注意以下事项:


  1. Demo系统必须与DataEase处于同一域名下;

你可以通过修改本地hosts文件来实现,比如我进行测试时在/etc/hosts中添加了如下映射:

127.0.0.1 localhost.fit2cloud.com
10.2.3.23 edu.fit2cloud.com
2. 启动前,需要修改Demo系统代码,填充DataEaseLoginController中的变量值;


  1. 页面嵌套参考如下代码,iframe中的src配置为后端的模拟登录地址;


  1. 在A系统登出时,需清除COOKIE,否则DataEase中的用户不会退出登录;


总结

DataEase支持使用iframe将系统嵌套到第三方系统中,同时DataEase还支持OIDC、CAS协议的单点登录系统的对接。通过单点登录或者模拟登录的方式,解决了两个系统用户认证的问题,从而实现了在第三方系统已登录时无需再次认证即可直接打开DataEase进行操作的效果。


推荐阅读
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了源码分析--ConcurrentHashMap与HashTable(JDK1.8)相关的知识,希望对你有一定的参考价值。  Concu ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了VoLTE端到端业务详解|VoLTE用户注册流程相关的知识,希望对你有一定的参考价值。书籍来源:艾怀丽 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 本文由编程笔记小编整理,主要介绍了使用Junit和黄瓜进行自动化测试中步骤缺失的问题。文章首先介绍了使用cucumber和Junit创建Runner类的代码,然后详细说明了黄瓜功能中的步骤和Steps类的实现。本文对于需要使用Junit和黄瓜进行自动化测试的开发者具有一定的参考价值。摘要长度:187字。 ... [详细]
  • 本文介绍了一种求解最小权匹配问题的方法,使用了拆点和KM算法。通过将机器拆成多个点,表示加工的顺序,然后使用KM算法求解最小权匹配,得到最优解。文章给出了具体的代码实现,并提供了一篇题解作为参考。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
author-avatar
等号拖轮_496
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有